#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QFileDialog>
#include <QFileSystemModel>
#include <QTreeView>
#include <QVBoxLayout>
#include <qdebug.h>
#include <qdir.h>
#include <QFileDialog>
#include <QVBoxLayout>


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QUiLoader loader;
    QFile file1(":/path/to/form.ui");

    ui->stackedWidget->addWidget();



}

MainWindow::~MainWindow()
{
    delete ui;
}



void MainWindow::on_creates_clicked()
{
    // 获取当前路径
    QDir currentDir = QDir::currentPath();

    // 定义要创建的文件夹名称
    QString folderName = "MyFolder";

    // 构造完整的文件夹路径
    QString folderPath = currentDir.absoluteFilePath(folderName);

    //QDir().mkpath(folderPath);

    // 创建文件夹
    if (QDir().mkpath(folderPath)) {
        qDebug() << "文件夹创建成功: " << folderPath;
    } else {
        qDebug() << "文件夹创建失败: " << folderPath;
    }
}



void MainWindow::on_choose_clicked()
{
     QString initialPath = "/path/to/your/directory"; // 替换为你的初始路径
     QFileDialog dialog;
     dialog.setDirectory(QDir(initialPath)); // 设置初始路径

     // 设置对话框为选择文件模式（默认为选择文件）
     // 如果需要选择文件夹，可以使用 QFileDialog::DirectoryOnly 模式
     // dialog.setFileMode(QFileDialog::Directory);

     // 显示对话框并获取用户选择的文件路径
     // 如果用户取消了选择，则返回的字符串为空
     QString selectedFile = dialog.getOpenFileName() + "/MyFolder"; // 对于文件选择
     // QString selectedDirectory = dialog.getExistingDirectory(); // 对于文件夹选择

     if (!selectedFile.isEmpty()) {
         qDebug() << "Selected file:" << selectedFile;
     } else {
         qDebug() << "No file selected.";
     }
}

bool removeDirRecursively(const QString &dirPath) {
    QDir dir(dirPath);

    if (!dir.exists()) {
        qDebug() << "Directory does not exist:" << dirPath;
        return true; // 如果目录不存在，可以认为“删除”操作是成功的
    }

    if (!dir.isReadable()) {
        qDebug() << "Directory is not readable:" << dirPath;
        return false;
    }

    QFileInfoList fileList = dir.entryInfoList(QDir::NoDotAndDotDot |
                                               QDir::AllDirs | QDir::Files);
    foreach (QFileInfo fileInfo, fileList) {
        if (fileInfo.isDir()) {
            // 递归删除子目录
            if (!removeDirRecursively(fileInfo.absoluteFilePath())) {
                return false;
            }
        } else {
            // 删除文件
            if (!QFile::remove(fileInfo.absoluteFilePath())) {
                qDebug() << "Failed to remove file:" << fileInfo.absoluteFilePath();
                return false;
            }
        }
    }

    // 删除空目录本身
    return dir.rmdir(dir.path());
}

void MainWindow::on_delete_2_clicked()
{
    QString folderToDelete = QDir::currentPath() + "/MyFolder"; // 替换为你要删除的文件夹路径

    if (removeDirRecursively(folderToDelete)) {
        qDebug() << "Directory and its contents deleted successfully:" << folderToDelete;
    } else {
        qDebug() << "Failed to delete directory or its contents:" << folderToDelete;
    }
}



void MainWindow::on_choose2_clicked()
{
    QFileDialog *fileDialog = new QFileDialog(this, "File Browser", QDir::currentPath(), QString());

    // 设置文件对话框为“详细信息”视图模式（可选）
   // fileDialog->setViewMode(QFileDialog::DetailedView);

    // 禁用文件选择和文件夹选择功能（这不是直接支持的，但可以通过其他方式实现）
    // 注意：QFileDialog没有直接提供禁用选择的功能，但你可以通过隐藏选择按钮或处理选择事件来间接实现
    // 这里我们简单地不连接任何选择信号，并且不调用exec()来阻塞等待用户选择

    // 显示对话框（非模态）
    fileDialog->show();
}

void MainWindow::on_cut_clicked()
{

}
